Hibernate Second Level Cache এবং Query Cache এর ব্যবহার

Java Technologies - স্প্রিং ওআরএম (Spring ORM) Spring ORM এবং Caching |
65
65

Hibernate একটি শক্তিশালী ORM টুল যা ডেটাবেস অপারেশনে পারফরম্যান্স উন্নত করার জন্য ক্যাশিং মেকানিজম সরবরাহ করে। Hibernate এ ক্যাশিং দুটি স্তরে কাজ করে:

  1. First Level Cache: প্রতিটি সেশনের জন্য ডিফল্টভাবে সক্রিয় থাকে।
  2. Second Level Cache: পুরো অ্যাপ্লিকেশনের জন্য শেয়ারযোগ্য ক্যাশ মেকানিজম।
  3. Query Cache: Second Level Cache এর উপর ভিত্তি করে নির্দিষ্ট কাস্টম ক্যাশিং।

Hibernate Second Level Cache

Second Level Cache ডেটা সঞ্চালনে একটি শেয়ারযোগ্য ক্যাশ ব্যবস্থাপনা করে যা একাধিক সেশনের জন্য ব্যবহার করা যায়। এটি ডেটাবেসে পুনরাবৃত্তি অপারেশন কমিয়ে অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে।

প্রতিস্থাপনযোগ্য ক্যাশ প্রোভাইডার:

  • Ehcache
  • Infinispan
  • Redis
  • Caffeine

Second Level Cache কনফিগারেশন

Maven ডিপেন্ডেন্সি

Ehcache প্রোভাইডার ব্যবহার করে Second Level Cache কনফিগার করার জন্য Maven ডিপেন্ডেন্সি যোগ করুন:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.6.15.Final</version>
</dependency>

Hibernate Configuration

application.properties ফাইলে Second Level Cache সক্রিয় করুন:

spring.jpa.properties.hibernate.cache.use_second_level_cache=true
spring.jpa.properties.hibernate.cache.region.factory_class=org.hibernate.cache.jcache.JCacheRegionFactory
spring.jpa.properties.javax.cache.provider=org.ehcache.jsr107.EhcacheCachingProvider

Entity-Level Configuration

@Cache অ্যানোটেশন ব্যবহার করে Second Level Cache কনফিগার করা হয়:

import jakarta.persistence.*;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;

@Entity
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
@Table(name = "products")
public class Product {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @Column(name = "name")
    private String name;

    @Column(name = "price")
    private Double price;

    // Getters and Setters
}

CacheConcurrencyStrategy Options:

  • READ_ONLY: ডেটা শুধুমাত্র পড়ার জন্য।
  • NONSTRICT_READ_WRITE: অপ্রচলিত ডেটা আপডেট করার অনুমতি।
  • READ_WRITE: পড়া এবং লেখা উভয়ের জন্য সঠিক সমন্বয়।
  • TRANSACTIONAL: সম্পূর্ণ ট্রানজ্যাকশনাল কনসিস্টেন্সি।

Query Cache

Query Cache একটি অতিরিক্ত ক্যাশিং মেকানিজম যা Hibernate এর HQL বা Criteria API এর জন্য ব্যবহৃত হয়। এটি সেকেন্ড লেভেল ক্যাশের ওপর নির্ভরশীল।


Query Cache কনফিগারেশন

Query Cache সক্রিয়করণ

application.properties ফাইলে Query Cache সক্রিয় করুন:

spring.jpa.properties.hibernate.cache.use_query_cache=true

Query Cache ব্যবহার

Query Cache ব্যবহার করতে হলে HQL বা Criteria Query তৈরি করতে হবে এবং সেটি ক্যাশ সক্ষম করতে হবে।

import org.hibernate.Session;
import org.hibernate.query.Query;
import org.springframework.stereotype.Repository;

@Repository
public class ProductRepository {

    @Autowired
    private Session session;

    public List<Product> getCachedProducts() {
        Query<Product> query = session.createQuery("from Product", Product.class);
        query.setCacheable(true); // Enable query caching
        return query.list();
    }
}

উদাহরণ: Second Level এবং Query Cache কার্যপ্রবাহ

ProductService ক্লাস

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService {

    @Autowired
    private ProductRepository productRepository;

    public List<Product> getProducts() {
        return productRepository.getCachedProducts();
    }
}

Controller

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/products")
public class ProductController {

    @Autowired
    private ProductService productService;

    @GetMapping
    public List<Product> getAllProducts() {
        return productService.getProducts();
    }
}

Hibernate Second Level Cache এবং Query Cache এর সুবিধা

ক্যাশিং প্রকারসুবিধা
Second Level Cacheডেটাবেস হিট কমিয়ে দ্রুত ডেটা রিট্রাইভ করে।
Query Cacheবারবার এক্সিকিউট করা কুয়েরির ফলাফল ক্যাশ করে।

Hibernate Second Level এবং Query Cache ব্যবহার করে অ্যাপ্লিকেশনের কার্যক্ষমতা এবং পারফরম্যান্স অনেকাংশে বৃদ্ধি করা সম্ভব।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion